package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.model.SOrderFeedetail;
import cn.huiyunche.base.service.vo.SOrderFeeDetailVo;

import java.math.BigDecimal;
import java.util.List;

public interface SOrderFeeDetailService {

    /**
     * @param customerOrderId 客户订单id
     * @param feeTypeId       费用类型
     * @param feeCode         费用编码
     * @param feeTypeName     费用名称
     * @param price           金额
     * @param actualAmount    实际金额
     * @Title: addFeeDetail
     * @Description: 保存客户订单费用详情
     * @return: long
     */
    long addFeeDetail(Long customerOrderId, Long feeTypeId, Integer feeCode, String feeName, BigDecimal price, BigDecimal actualAmount);

    /**
     * @param customerOrderId 客户订单id
     * @param feeCode         费用code
     * @return
     * @Title: getFeeByOrder
     * @Description: 获取客户订单费用详情
     * @return: SOrderFeedetail
     */
    SOrderFeedetail getFeeByOrder(Long customerOrderId, int feeCode);

    /**
     * @param customerOrderId 客户订单id
     * @param feeCode         费用详情
     * @return
     * @Title: getAllFeesByOrder
     * @Description: 查询客户订单费用详情
     * @return: List<SOrderFeedetail>
     */
    List<SOrderFeedetail> getAllFeesByOrder(long customerOrderId, int... feeCode);

    /**
     * @param customerOrderId       客户订单主键
     * @param hasContainsInvoiceFee 是否包含发票税费
     * @Title: getAllFeesBySOrder
     * @Description: 查询客户订单所有费用详细
     * @return: List<SOrderFeeDetailVo>
     */
    List<SOrderFeeDetailVo> getAllFeesBySOrder(long customerOrderId, Boolean isVeneer, Boolean hasContainsInvoiceFee);

    /**
     * Delete by c order id.
     *
     * @param customerOrderId 客户订单id
     * @param customerOrderId 客户订单id
     * @Title: deleteByCOrderId
     * @Description: 根据客户订单id删除费用详情
     * @return: void
     */
    void deleteByCOrderId(long customerOrderId);
}
